package com.jumper.study.front.service;

import java.util.List;

import com.jumper.study.front.dto.req.MyLessonSearchReq;
import com.jumper.study.front.dto.resp.LessonEbookResp;
import com.jumper.study.front.dto.resp.MyLessonChapterResp;
import com.jumper.study.front.dto.resp.MyLessonListItemResp;
import com.jumper.study.front.dto.vo.PageVO;

public interface StudentLessonService {
    /**
     * 课程是否已购买
     * @param lessonId
     * @param accountId
     * @return
     */
    boolean isBuyed(Long lessonId, Long accountId);

    /**
     * 我的课程列表
     * @param page
     * @param search
     * @return
     */
    List<MyLessonListItemResp> pageSearchList(PageVO page, MyLessonSearchReq search);

    /**
     * 我的课程章节列表
     * @param lessonId
     * @param accountId
     * @return
     */
    List<MyLessonChapterResp> chapters(Long lessonId, Long accountId);

    /**
     * 我的课程课件列表
     * @param lessonId
     * @param accountId
     * @return
     */
    List<LessonEbookResp> ebooks(Long lessonId, Long accountId);

    /**
     * 开始学习
     * @param lessonId
     * @param chapterId
     * @param accountId
     * @return
     */
    boolean startStudy(Long lessonId, Long chapterId, Long accountId);

    /**
     * 更新学习日志
     * @param lessonId
     * @param chapterId
     * @param accountId
     */
    void updateStudy(Long lessonId, Long chapterId, Long accountId);

    /**
     * 结束学习时调用
     * @param lessonId
     * @param chapterId
     * @param accountId
     * @return
     */
    void endStudy(Long lessonId, Long chapterId, Long accountId);

    /**
     * 断线重连
     * @param lessonId
     * @param chapterId
     * @param accountId
     * @return
     */
    boolean reConnect(Long lessonId, Long chapterId, Long accountId);

    /**
     * 学员某课学习时长
     * @param accountId
     * @param lessonId
     * @return
     */
    Long studyTimes(Long accountId, Long lessonId);
}
